package com.demo.java.OD601_650.OD645;

import java.util.Scanner;
import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【日志限流(A卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146975229
 */
public class OdMain {
    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        int N = in.nextInt();  // 生产单元的数量
        int[] records = new int[N];  // 每个生产单元的日志条数
        long single_total = 0;

        // 输入每个生产单元的日志条数
        for (int i = 0; i < N; i++) {
            records[i] = in.nextInt();
            single_total += records[i];
        }

        int total = in.nextInt();  // 总的日志条数限制

        // 如果所有日志的总和小于等于总限制，则无法调整
        if (single_total <= total) {
            System.out.println(-1);
            return;
        } else {
            // 对记录的日志数进行排序
            Arrays.sort(records);

            // 二分查找初始化
            int left = total / N;
            int right = records[N - 1];

            int result = left;
            while (right > left + 1) {
                int mid = (right + left) / 2;  // 取中间值

                // 计算当前中间值下的总日志数
                int temp_total = 0;
                for (int i = 0; i < N; i++) {
                    temp_total += Math.min(records[i], mid);  // 对每个生产单元的日志进行限制
                }

                // 如果总日志数超过限制，则减少最大日志数
                if (temp_total > total) {
                    right = mid;
                } else if (temp_total < total) {
                    left = mid;
                    result = mid;
                } else {
                    // 如果恰好等于总日志数，直接输出
                    System.out.println(mid);
                    return;
                }
            }

            // 输出最终的结果
            System.out.println(result);
            return;
        }
    }
}